package com.example.temp;


public class Test27 {

    public static void main(String[] args) {

    }

    /**
     * 数组中有一个数字出现的次数超过数组长度的一半，请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。
     * 由于数字2在数组中出现了5次，超过数组长度的一半，因此输出2。如果不存在则输出0。
     */


    public class Solution {

        public int MoreThanHalfNum_Solution(int[] a) {
            if(a == null || a.length <= 0)
                return 0;
            int num = a[0];
            int times = 1;

            for (int i = 1; i < a.length; i++) {
                if (times == 0) {
                    num = a[i];
                    times = 1;
                } else {
                    if (num == a[i]) {
                        times++;
                    }else {
                        times--;
                    }
                }
            }

            if(times > 0) {
                int count = 0;
                for (int i = 0; i < a.length; i++) {
                    if (num==a[i])count++;
                }
                if (count>a.length/2) {
                    return num;
                }else {
                    return 0;
                }
            }else {
                return 0;
            }
        }

    }
}
